#ifndef __MATERIAL_H__
#define __MATERIAL_H__

#include <map>

namespace RayFrame
{
  class Texture;
  class Color;
  class ShaderProgram;
  class Material;

  class DLL_DECLARE Material
  {
  public:
    Material();
    ~Material();

    void Create(STRING name, Texture* texture, ShaderProgram* shader);

    virtual void Begin();
    virtual void End();

    static bool LoadObjMaterial(STRING filename, Material& result);
    static Material* GetDefaultMaterial();
  protected:
    STRING            m_name;
    Texture*          m_texture;
    ShaderProgram*    m_shader;
  };
};

#endif